// import com.alibaba.druid.sql.ast.statement.SQLSelect_ptr;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
#pragma once
#include "MySqlStatementImpl.h"
#include "MySqlShowStatement.h"

class SQLSelect;
class MySqlASTVisitor;

class MySqlUpdatePlanCacheStatement
    : virtual public MySqlStatementImpl,
      virtual public MySqlShowStatement
{
public:
  SQLSelect_ptr formSelect;
  SQLSelect_ptr toSelect;

  SQLSelect_ptr getFormSelect();
  SHAREDOBJECT(MySqlUpdatePlanCacheStatement);

  void setFormSelect(SQLSelect_ptr formSelect);

  SQLSelect_ptr getToSelect();

  void setToSelect(SQLSelect_ptr toSelect);

  void accept0(MySqlASTVisitor_ptr visitor);

  virtual SQLObject_ptr clone()
  {
    SQLObject_ptr clone_tmp = std::shared_ptr<MySqlUpdatePlanCacheStatement>(new MySqlUpdatePlanCacheStatement());
    std::shared_ptr<MySqlUpdatePlanCacheStatement> x = std::dynamic_pointer_cast<MySqlUpdatePlanCacheStatement>(clone_tmp);
    return x;
  }
};
